﻿#pragma once
#include "stdafx1.h"
#include <QList>
#include <QMap>

#include "Source/ProjectModule/Undo/ExtendPart/C_UndoDataBase.h"

/*
-----==========================================================-----
		类：		场强探头 数据类.h
		作者：		drill_up
		所属模块：	场强探头模块
		功能：		场强探头模块的数据类对象
-----==========================================================-----
*/

class C_FieldProbe : public C_UndoDataBase {

public:
	C_FieldProbe();
	~C_FieldProbe();

	//-----------------------------------
	//----属性	protected:
									//ID（撤回基类数据）
									//名称（撤回基类数据）
	public:
		void setName(QString name);
		QString getName();

	//-----------------------------------
	//----参数
	public:
		int m_FieldType;			//类型 (0:E-Field, 1:H-Field, 2:E-Field(Farfield), 3: H-Field(Farfield), 4:RCS)
		int m_OrientationType;		//方向 (0:X, 1:Y, 2:Z, 3:All(X, Y, Z, Abs)
		double m_PosX;
		double m_PosY;
		double m_PosZ;
	public:
									//参数 - 从字符串返回类型下标
		int getFieldTypeByStr(const QString&);
									//参数 - 从字符串返回方向下标
		int getOrientationByStr(const QString&);
									//参数 - 下拉框参数
		static QStringList getFieldItems();
		
	//-----------------------------------
	//----描述
	public:
										//描述 - 获取求解器用文本
		QString getFieldType_solverString();
										//描述 - 获取属性描述
		QPair<QString, QString> getAttributesDesc();

	//-----------------------------------
	//----UI参数
	public:
		bool m_autoCheck;


	//-----------------------------------
	//----访问器
	public:
												//访问器 - 获取子类类名
		QString get__CLASS_NAME__() override;
												//访问器 - 获取子类类名（中文名）
		QString get__CLASS_NAME__Chinese() override;
												//访问器 - 获取所有继承的类名
		QStringList get__CLASS_INHERITED_LIST__() override;
												//访问器 - 是否继承了某类
		bool get__CLASS_IS_INSTANCE_OF__(QString class_name) override;
												//访问器 - 原型复制对象
		C_FieldProbe clone();
		QSharedPointer<C_FieldProbe> clonePtr();
		C_UndoDataBasePtr cloneParentPtr() override;


	//-----------------------------------
	//----类属性
	public:
						//复制对象
		void copyFrom(C_FieldProbe* a);
						//运算符重载
		const bool operator== (const C_FieldProbe& a)const;
						//空判断
		bool isNull();
						//实体类 -> QJsonObject
		QJsonObject getJsonObject_undoChildData() override;
						//QJsonObject -> 实体类
		void setJsonObject_undoChildData(QJsonObject obj) override;

};
